{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = np.random.uniform(-3, 3, size=100)\n",
    "X = x. reshape(-1, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "y = 0.5 * x**2 + x + 2 + np.random.normal(0, 1, size=100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X, y)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.linear_model import LinearRegression\n",
    "\n",
    "lin_reg = LinearRegression()\n",
    "lin_reg.fit(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_predict = lin_reg.predict(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x, y)\n",
    "plt.plot(x, y_predict, color='r')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 解决方案， 添加一个特征"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(100, 1)"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(X**2).shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "X2 = np.hstack([X, X**2])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "lin_reg2 = LinearRegression()\n",
    "lin_reg2.fit(X2, y)\n",
    "y_predict2 = lin_reg2.predict(X2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x, y)\n",
    "plt.plot(np.sort(x), y_predict2[np.argsort(x)], color='r')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "看上去这根曲线的拟合程度更好"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.99902653, 0.46334749])"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lin_reg2.coef_   # 0.999是x的系数，0.46是x**2的系数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2.0518267069340164"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lin_reg2.intercept_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "使用线性回归的思路，为原来的样本添加新的特征，新的特征是原有特征的多项式的组合。以此来解决非线性问题。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "PCA是对数据做降维处理，这里则是对数据集升维。通过升维和添加特征，使算法拟合高维度的数据。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
